נספח לפרק 10 דוגמא לאנליזה של מכונת מצבים ננסה להבין את פעולתה של מ כונת המצבים הבאה : Input X D FF-0 q 0 q 1 Z D FF-1 output clk 424
מצב המכונה מוגדר על ידי יציאות רכיבי הזיכרון. נסמן את המצב הנוכחי q 0, q 1 על ידי ואת המצב הבא על ידי. 1 0, המכונה מבוססת על הפליפ-פלופ הפשוט ( ETDFF ( Edge-Triggered D-FF שעבורו המצב הבא ) כלומר יציאתו לאחר עליית השעון הבאה ( זהה לערך כניסתו D בזמן עליית השעון. כך נוכל לתאר את פעולת המכונה על ידי המשוואות : 0 = x q 1 1 = q 0 z = q 0 q 1 D 0 = x q 1 D 1 = q 0 425
חוקי מעבר אלו ניתנים לתיאור על ידי טבלת מעברי מצב ) table ( state transition וגם על ידי דיאגרמת מעברי מצב : ) diagram ( state transition 0/0 1/0 A 00 A 01 0,1/0 0/0 1/0 A 10 0,1/1 A 11 426
Current state Input Next state Ouput q 1 q 0 x 1 0 z 00 0 00 0 00 1 01 0 01 0 10 0 01 1 11 0 10 0 00 0 10 1 00 0 11 0 10 1 11 1 10 1 בכך הישגנו את מטרתנו וסיימנו לאפיין את המכונה הנתונה. הבנה מלאה של תפקיד המכונה הוא לעיתים קשה מאוד, ובדרך כלל יש להעזר לשם כך בסדרות 427 בוחן עבורן נבחן את התנהגות היציאות.
מימוש אלטרנטיבי באמצעות ROM כפי שראינו מכונת המצבים מורכבת ממעגל צירופי ) מימוש פונקציות המעבר והיציאה ( ומרכיבי זיכרון. ניתן לממש את החלק הצירופי על ידי זיכרון ROM ישירות מטבלת מעברי המצב, כמו זאת שבדוגמא למעלה. אגף שמאל בטבלה ) משמאל לקו המודגש, כלומר הכניסות לפונקציות הצירופיות ( משמש כתובת, ואגף ימין בטבלה ) ערכי הפונקציות הצירופיות ( מהווה את תוכן ה- ROM ומתקבל ביציאותיו : Initial state q 0 q 1 Input X q 0 2 x SEL ( 2 1 ) ROM 0 1 Z output q 1 D בוחר בין כניסת Initial state או יציאות הזיכרון select clk 428
תכנון מערכת עקיבה סינכרונית (דוגמא) : x(0), x(1),x(2 ) הוא מונה זמן בדיד n z(n) כך ש- z(n)=x(n)x(n-1). נגדיר נתונה סדרת קלט x(n) כאשר יש לחשב סדרת פלט מתאימה תנאי שפה z(0)=0. n 0 1 2 3 4 5 6 7 8 x 1 0 0 1 0 1 1 1 0 z 0 0 0 0 0 0 1 1 0 דוגמא : : X נצייר את דיאגרמת המצבים. צריך לזכור רק את הערך האחרון של 429
0/0 1/1 1/0 A 0/0, כדי לקיים את תנאי השפה). B משמעות המצבים היא: A- הקלט הקודם היה ) 0 מצב התחלתי B- הקלט הקודם היה. 1 מעברי המצבים בדוגמא לעייל הם : n 0 1 2 3 4 5 6 7 8 x 1 0 0 1 0 1 1 1 0 A B A A B A B B B A z 0 0 0 0 0 0 1 1 0 430
המצב ההתחלתי (A) מצוין בצד שמאל. להמשיכם כלפי ימין לכל אורך הציור. החיצים מדגימים מי תלוי במי וניתן טבלת המצבים המתאימה היא : PS x=0 x=1 A A,0 B,0 B A,0 B,1 431 בטבלה יש שורה לכל מצב בו יכולה המערכת להימצא, ועמודה לכל צירוף אפשרי של הקלט. זוג הערכים בטבלה מסמן את המצב הבא אליו תעבור המכונה ואת המוצא הנוכחי אותו תייצר המכונה. אם נשתמש במשתנה מצב בשם y ונקצה y=1 A ו - B y=1 נקבל :
PS=y x=0 x=1 Y,z Y,z 0 0,0 1,0 1 0,0 1,1 נפצל את טבלת המעברים לשתי טבלות:טבלת מעברי מצב וטבלת היציאות בכדי שיהיה קל לחשב כל פונקציה בנפרד (כאשר יש יותר ממשתנה מצב אחד, כדאי לפרק את טבלת המעברים לכל משתנה מצב בנפרד): 432
x y 0 1 0 0 1 1 0 1 x y 0 1 0 0 0 1 0 1 טבלת Y טבלת z Y = x כלומר, z = x y 433
: ( ETDFF והמימוש ) באמצעות x z Y D FF-0 y קיבלנו מימוש של מכונת Mealy ללא סינכרון כניסה. הבה נבחן מה קורה בכל רגע, על פי הדוגמא : כיצד היא פועלת? 434
x Y D 1 1 0 FF-0 y 0 z מצב המערכת מייד לפני עליי ת שעון 0 x 0 0 z 0 1 Y D y FF-0 מצב המערכת מייד לפני עליי ת שעון 1 435
x Y D 0 0 0 FF-0 y 0 z מצב המערכת מייד לפני עליי ת שעון 2 x Y D 1 1 0 FF-0 y 0 z מצב המערכת מייד לפני עליי ת שעון 3 436
n clk x 0 1 2 3 4 5 6 7 8 X(0)=1 0 0 1 0 1 1 1 0 y מצב התחלתי 0 z 0 0 0 0 0 0 1 1 0 437
נניח לצורך הדיון שכל ההשהיות במעגל זניחות. הקטעים המקווקים מסמנים פרקי זמן בהם איננו יודעים מהי הכניסה, x ובשל כך גם לא ניתן לקבוע במשך אותם פרקי זמן מה תהיה היציאה. z את היציאה יש לבדוק מיד כאשר הכניסה מתייצבת על ערכה החדש, ולפני עליית השעון הבאה - לאחר עליית השעון עשוי משתנה המצב y להשתנות, ובעקבותיו תשתנה מיידית גם היציאה. ניתן להוסיף FF בכניסה על מנת לסנכרנה : px D x z Y D y 438
px D x Y D 1 1 0 y z מצב המערכת לאחר עליית ש עון 0 px D x 0 Y D 0 1 y 0 z מצב המערכת לאחר עליית ש עון 1 439
n clk px x y z כעת המכונה תתנהג לפי הסכמה הבאה : 0 1 2 3 4 5 6 7 8 X(0)=1 0 0 1 0 1 1 1 0 מעוכב מחזור שעון אחד אחרי מערכת בלי סינכרון כניסה. Z(0) Z(1) Z(2) Z(3) Z(4) Z(5) Z(6) Z(7) 0 0 0 0 0 0 1 1 440
כעת כמובן קל יותר לעקוב אחר היציאה, רק בפרק זמן קצר. כי היא יציבה במשך מח זור שלם ו לא נשים לב להשהייה של מחזור שעון אחד. 441
0/0 דוגמא נוספת: מונה בינארי מודולו 8 יציאת המונה 1=z עם קבלת ה- 1 השמיני, השישה עשר, העשרים ורביעי, בקלט x 0/0 1/1 1/0 S 0 S 1 0/0 דיאגרמת המצבים פשוטה למדי : 1/0 S 7 1/0 0/0 0/0 S 5 S 2 1/0 1/0 0/0 S 6 1/0 S 4 0/0 1/0 S 3 0/0 442
נממש את המכונה, לשם שינוי, באמצעות רכיבי Trigger T-FF וכן SR-FF למימוש מכונה בת שמונה מצבים נזדקק לשלושה רכיבי זיכרון. טבלת המצבים היא : NS, z PS x=0 x=1 S 0 S o, 0 S 1, 0 S 1 S 1; 0,, S 2, 0 S 2, 0 S 3, 0 S 2 S 3 S 4 S 5 S 6 S 7 S 3, 0 S 4, 0 S 4, 0 S 5, 0 S 5, 0 S 6, 0 S 6, 0 S 7, 0 S 7, 0 S 0, 1 443
נקצה משתני מצב לפי הקוד הבינארי ונפריד את טבלות המעברים והיציאה : Y 3 Y 2 Y 1 Z y 3 y 2 y 1 x=0 x=1 x=0 x=1 000 000 001 0 0 001 001 010 0 0 010 010 011 0 0 011 011 100 0 0 100 100 110 0 0 101 101 101 0 0 110 110 111 0 0 111 111 000 0 1 444
: ( נממש באמצעות. T-FF פליפ-פלופ זה מוגדר על ידי טבלת המעברים הבאה: ) כאשר הכניסה 1=T מחליף ה- FF את ערכו, ולכן הוא קרוי Trigger FF 0 0 T=0 0 1 T=1 1 0 T=1 1 1 T=0 : D-FF ניתן לממש T-FF על ידי T CLR S ET D 445
נפעיל את הגדרת T-FF על טבלת המעברים לעיל ונקבל את טבלת העירור המציינת אילו כניסות צריך לייצר לשלושת ה - FF על מנת ליצור את T 1 T 2 T 3 המעברים הדרושים : y 3 y 2 y 1 x=0 x=1 000 000 001 001 000 011 010 000 001 011 000 111 100 000 001 101 000 011 110 000 001 111 000 111 446
T 1 = x T 2 = xy 1 T 3 = xy 1 y 2 פונקצית העירור: פונקצית היציאה : z = xy 1 y 2 y 3 מימוש : x z T 1 T 2 T 3 y 1 y 2 y 3 447
המימוש מספק לא רק את היציאה z אלא גם את ערכי המונה בכל רגע ורגע, שהם משתני המצב ) כפי שבחרנו בעת הקצאת המצבים (. מימוש באמצעות: SR-FF כעת הגדרת ה - FF שונה במקצת : 0 0 0 1 1 0 1 1 S R 0 φ 1 0 0 1 φ 0 448
y 3 y 2 y 1 x = 0 x = 1 טבלת העירור : S 3 R 3 S 2 R 2 S 1 R 1 S 3 R 3 S 2 R 2 S 1 R 1 000 0φ 0φ 0φ 0φ 0φ 10 001 0φ 0φ φ0 0φ 10 01 010 0φ φ0 0φ 0φ φ0 10 011 0φ φ0 φ0 10 01 01 100 φ0 0φ 0φ φ0 0φ 10 101 φ0 0φ φ0 φ0 10 01 110 φ0 φ0 0φ φ0 φ0 10 111 φ0 φ0 φ0 01 01 01 449
פונקציות העירור S 1 = xy 1 S 2 = xy 1 y 2 S 3 = xy 1 y 2 y 3 R 1 = xy 1 R 2 = xy 1 y 2 R 3 = xy 1 y 2 y 3 המימוש: Y 1 Y 2 Y 3 x S 1 R 1 S 2 R 2 S 3 R 3 z y 1 y 2 y 3 450
xy 3 xy 3 y 2 y 1 00 01 11 10 y 2 y 1 00 01 11 10 00 1 1 00 01 φ φ 01 1 1 11 φ φ 11 φ φ 10 1 1 10 φ φ φ φ S 1 = xy 1 S 2 = xy 1 y 2 xy 3 y 2 y 1 00 01 11 10 00 φ φ 01 φ φ 11 φ 1 10 φ φ S 3 = xy 1 y 2 y 3 451
xy 3 y 2 y 1 00 01 11 10 xy 3 00 01 11 10 y 2 y 1 00 01 11 10 φ φ 00 φ φ φ φ 1 1 01 φ φ 1 1 11 1 1 φ φ 10 R 1 = xy 1 R 2 = xy 1 y 2 xy 3 y 2 y 1 00 01 11 10 00 01 11 10 φ φ φ φ φ 1 φ φ R 3 = xy 1 y 2 y 3 452